// 模板引擎的实现原理就是 with + new Function  (掌握模板引擎的实现原理 都是这个套路 )
// commonjs 实现原理   

// 1.with解决的是在模板中取值的问题，with函数是对象式环境记录项
// 2.new Function 就是让代码传参 ，返回最终的结果

const fs = require('fs').promises
const path = require('path');
const ejs = {
    async renderFile (filePath,data){
        const template = fs.readFile(filePath,'utf-8')
        
        //  const template =await fs.readFile(filePath,'utf8')
        //  let head =   'let str = ``;\r\n'
        //  head += 'with(obj) {\r\nstr += `'
        //  let content = template.replace(/<%=(.+?)%>/g,function(){
             
        //      return '${' + arguments[1] +  '}'
        //     // return data[arguments[1]]
        //  })
        //  console.log(content);
        //  content = content.replace(/<%(.+?)%>/g,function(){
        //     return '`\r\n' + arguments[1] + '\r\nstr+=`'
        // })
        // let foot = '`} \r\n return str '
        //  return new Function ('obj',head + content+foot)(data)
          
    }
}

ejs.renderFile(path.resolve(__dirname, 'template.html'), { name: 'zf', age: 12 }).then(data => {
    console.log(data)
})
